🎖️GitЯра🎖️
CLAUDE.md 988db081b289cbc23d9bceef8e7d85ab46d0e6a4 (988db081) Text, 3.37 KB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
AGENTS.md is the source of truth for rules, architecture, and workflow; the T383838.skills/ modules hold the detail. This file does not duplicate them — it adds Claude-specific workflow notes and the few commands a fresh session needs immediately.
@AGENTS.md
Claude-Specific Instructions
• Think First: Outline step-by-step reasoning inside T383838<thinking> tags before writing code or shell commands.
• Skills: Load only the T383838.skills/ module relevant to the current task — don't read them all. Start with T383838.skills/project-overview/SKILL.md (codebase map, bootstrap, troubleshooting).
• Plan Mode: Use it for changes spanning multiple modules; write plans to T383838.agent_plans/ (git-ignored). Skip the Copilot-CLI T383838<copilot_cli_workflow> guidance in AGENTS.md — it doesn't apply to Claude Code.
• Delegate to keep context lean (this is a 20+ module KMP repo):
• Broad searches ("where is X used", "find all implementers of Y") → dispatch the T383838Explore subagent so file dumps stay out of the main context; you get back the conclusion.
• Gradle builds/tests/lint → dispatch the T383838gradle-runner subagent. A full T383838assembleDebug/T383838allTests log is thousands of lines; the subagent returns only pass/fail + failing tests. Don't run heavy T383838./gradlew tasks inline.
• Symbol navigation ("where is this defined", "who calls this", "find implementers") → use the T383838LSP tool (T383838goToDefinition / T383838findReferences / T383838goToImplementation) instead of reading whole files. T383838kotlin-language-server is configured via T383838.github/lsp.json.
• Big files are guarded, not free: T383838.claude/settings.json denies the Crowdin locale T383838strings.xml files and prompts before reading the base T383838strings.xml, T383838firmware_releases.json, T383838emoji-data.json, and T383838flatpak-sources.json. For strings, consult T383838.skills/compose-ui/strings-index.txt instead of the raw file.
Quick Reference
JDK 21 is required. Bootstrap before any Gradle task (don't wait to be told) — full details in T383838.skills/project-overview/SKILL.md:
T282828
Tff7b72[ -z Ta5d6ff"Te6edf3$ANDROID_HOMETa5d6ff" Tff7b72] Tff7b72&& Tffa657export Te6edf3ANDROID_HOMETff7b72=Ta5d6ff"Te6edf3$HOMETa5d6ff/Library/Android/sdkTa5d6ff" T8b949e# often unset in agent workspaces
git submodule update --init T8b949e# proto submodule; builds fail without it
Tff7b72[ -f local.properties Tff7b72] Tff7b72|| cp secrets.defaults.properties local.properties T8b949e# google flavor fails without it
Baseline verification — run before every push (CI has failed on skipped local checks):
T282828
./gradlew spotlessApply spotlessCheck detekt assembleDebug Tffa657test allTests
Both T383838test and T383838allTests are required: T383838allTests covers KMP modules (where the bare T383838test task is ambiguous and silently skips), T383838test covers pure-Android/JVM modules. Add T383838kmpSmokeCompile when touching a KMP module. After adding string resources, run T383838python3 scripts/sort-strings.py. Change-type matrix and CI architecture: T383838.skills/testing-ci/SKILL.md.
Single test:
T282828
./gradlew :feature:messaging:allTests T8b949e# one KMP module
./gradlew :androidApp:testFdroidDebugUnitTest T8b949e# one Android/JVM module
./gradlew :core:data:allTests --tests Ta5d6ff"*PacketHandlerTest*" T8b949e# filter to one class/method
Served by rngit 1.5.0 - Generated in 0.04s